In today's information age, it is typical for computers and computer peripherals to be internetworked over a communication network. The communication network typically includes a plurality of communication links that are interconnected through a number of intermediate devices, such as bridges, routers, or switches. Information sent by a source device to a destination device traverses one or more communication links.
The various communication devices in the communication network, including the computers, computer peripherals, and intermediate devices, utilize various communication protocols in order to transport the information from the source device to the destination device. The communication protocols are typically implemented in layers, which together form a protocol stack. Each protocol layer provides a specific set of services to the protocol layer immediately above it in the protocol stack. Although there are different protocol layering schemes in use today, the different protocol layering schemes have certain common attributes. Specifically, protocols at the lowest layer in the protocol stack, which are typically referred to as the “layer 1” or “physical layer” protocols, define the physical and electrical characteristics for transporting the information from one communication device to another communication device across a single communication link. Protocols at the next layer in the protocol stack, which are typically referred to as the “layer 2” or “Medium Access Control (MAC) layer” protocols, define the protocol message formats for transporting the information across the single communication link by the physical layer protocols. Protocols at the next layer in the protocol stack, which are typically referred to as the “layer 3” or “network layer” protocols, define the protocol message formats for transporting the information end-to-end from the source device to the destination device across multiple communication links. Higher layer protocols ultimately utilize the services provided by the network protocols for transferring information across the communication network.
In order for a communication device to utilize the services of the communication network, the communication device is assigned various addresses that are used by the different protocol layers in the protocol stack. Specifically, each communication device that participates in a MAC layer protocol is assigned a MAC layer address that is used to identify the particular communication device to other communication devices participating in the MAC layer protocol. Furthermore, each communication device that participates in a network layer protocol is assigned a network layer address that is used to identify the particular communication device to other communication devices participating in the network layer protocol. Other addresses may be used at the higher layers of the protocol stack, for example, for directing the information to a particular application within the destination device.
Therefore, in order for the source device to send a message to the destination device, the source device first encapsulates the message into a network layer protocol message (referred to as a “packet” or “datagram” in various network layer protocols). The network layer protocol message typically includes a source network layer address equal to the network layer address of the source device and a destination network layer address equal to the network layer address of the destination device. The source device then encapsulates the network layer protocol message into a MAC layer protocol message (referred to as a “frame” in various MAC layer protocols). The MAC layer protocol message typically includes a source MAC layer address equal to the MAC layer address of the source device and a destination MAC layer address equal to the MAC layer address the destination device. The source device then sends the MAC layer protocol message over the communication link according to a particular physical layer protocol.
In certain situations, the source device and the destination device may be on different communication links. Therefore, an intermediate device receives the MAC layer protocol message from the source device over one communication link and forwards the MAC layer protocol message to the destination device on another communication link based upon the destination MAC layer address. Such an intermediate device is often referred to as a “MAC layer switch.”
In order to forward protocol messages across multiple communication links, each intermediate device typically maintains an address database including a number of address entries, where each address entry includes filtering and forwarding information associated with a particular address. A typical address entry maps an address to a corresponding network interface. Such address entries are typically used for forwarding protocol messages by the intermediate device, specifically based upon a destination address in each protocol message. For example, upon receiving a protocol message over a particular incoming network interface and including a particular destination address, the intermediate device finds an address entry for the destination address, and processes the protocol message based upon the filtering and forwarding information in the address entry. The intermediate device may, for example, “drop” the protocol message or forward the protocol message onto an outgoing network interface designated in the address entry.
Because intermediate devices are utilized in a wide range of applications, some intermediate devices utilize a modular design that enables a number of modules to be interconnected in a stack configuration such that the number of interconnected modules interoperate in a cooperating mode of operation to form a single virtual device. Each module is capable of operating independently as a stand-alone device or in a stand-alone mode of operation, and therefore each module is a complete system unto itself. Each module typically supports a number of directly connected communication devices through a number of network interfaces.
The modular design approach enables the intermediate device to be scalable, such that modules can be added and removed to fit the requirements of a particular application. However, the modular design approach also complicates protocol message forwarding. Specifically, when a number of modules are interconnected in a cooperating mode of operation, it is possible for the source device and the destination device to be supported by different modules. In order to forward a protocol message from the source device to the destination device, the protocol message must be forwarded between cooperating modules, and specifically from the module that supports the source device to the module that supports the destination device. Such intermodule forwarding necessitates address-to-module mappings for all addresses supported by the virtual device.
One way to maintain address-to-module mappings is to maintain a centralized address database that is used by all cooperating modules. In this centralized approach, an address entry is created in the centralized address database each time a new address is learned by a module. The address entry includes at least the address and a module identifier identifying the module that directly supports the address. In order for a module to forward a particular protocol message based upon the destination address, the module finds an address entry for the destination address in the centralized address database, retrieves the module identifier from the address entry, and forwards the protocol message to the appropriate cooperating module (which may be the module itself) based upon the module identifier.
A preferred way to maintain address-to-module mappings is for each module to maintain its own address database and to synchronize the address databases across all cooperating modules. Because each module is capable of operating independently, each module is already capable of maintaining an address database. In order to synchronize the address databases across the number of cooperating modules, each module “owns” the addresses for its directly connected communication devices, which interface with the particular module over a number of interface ports. From the perspective of a particular module, an address that is owned by that particular module is referred to as a “locally owned address,” while an address that is owned by another module is referred to as a “remotely owned address.” Each module maintains a number of locally owned address entries (i.e., address entries for locally owned addresses) and a number of remotely owned address entries (i.e., address entries for remotely owned addresses). A locally owned address entry includes, among other things, the locally owned address and a port identifier identifying the interface port that is associated with the locally owned address. A remotely owned address entry includes, among other things, the remotely owned address and a module identifier identifying the module that owns the address.
When all address databases are synchronized across all cooperating modules, all address databases contain address entries for the same addresses. It is possible for a particular module to be temporarility out of synchronization, such that the module's address database does not include an address entry for a particular address. In any case, at no time does any one address database include a list of all addresses together with the port number associated with each address. Unfortunately, it is sometimes necessary for a single module (referred to hereinafter as the “reporting module”) to provide a complete list of address-to-port-number mappings to a network administrator or network manager, typically in lexicographical order.
Therefore, a technique for address reporting is needed.